import {ref} from 'vue';
import http from "@/utils/http/";
//定义请求接口的api方法 (接口类型(参数类型|响应数据类型 data的类型) || 定义的请求方式 || 对外导出)

/*
*   获取验证码方法,无餐，有返回，
*/
let getCaptcha=()=>{
    return http.get<CaptchaType>(`/admin/login/captcha`);
}
/* 
*指定返回类型
*自定义返回数据类型，image,key
*/
interface CaptchaType{
    image:string,
    key:string
}
/**
 * 定义登录api，
    * post方式
    * 参数《四个表单，有captchaKey来自验证码api，自定义
    * 返回：token，
    * 执行成功，返回token，
 * 并存储token到pinia，存储到sessionstroage中，
 * 之后再次请求，进行路由守卫，判定登录状态，载跳转路由
 *
 */
/* 登录请求参数类型 */
interface LoginType{
    username:string,
    password:string,
    captchaKey:string,
    captchaCode:string
}
/* 登录api */
let login =(loginForm:LoginType)=>{
    return http.post<string>(`/admin/login`,loginForm);
}

/**
 * 回显用户信息api,
    * get方法 
    * 需要携带token， 请求拦截器，设置请求头
    * 返回用户信息，  需自定义用户类型
    * 将用户信息存储在pinia中，
    * 最后页面上回显用户信息
    * 在登录成功后，调用回显用户信息的方法
    * 
 */
//自定义用户信息
interface UserInfoType{
    name:string,
    avatarUrl:string
}
// 获取用户信息api
let getUserInfo=()=>{
    return http.get<UserInfoType>("/admin/info")
}

/* 导出 */
export {
    type CaptchaType,
    type LoginType,
    login,
    getCaptcha,
    type UserInfoType,
    getUserInfo
}